package com.tedu.controller;

import com.alibaba.fastjson.JSON;
import com.tedu.pojo.ResultData;
import com.tedu.pojo.User;
import com.tedu.servies.UserServies;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * 用户模块的控制器
 * 登录、注册、个人信息管理
 */
@Controller   // 声明UserController是一个控制器，交给spring管理
public class UserController {

    //从spring容器中，获取服务对象
    @Autowired
    UserServies userServies;

    //显示登录页面  当用户访问：/toLogin.do 时，进入本方法
    @RequestMapping("/toLogin")
    public String toLogin(){
        System.out.println("你正在访问登录页面，不是登录操作");
        return "login";//通过springMVc的配置文件; 转发到：/WEB-INF/jsp/login.jsp
    }

    //用户登录操作的方法
    @RequestMapping("/user/login")  //  登录地址：/user/login.do
    @ResponseBody   //返回用户  文本
    public String login(String username, String password, HttpSession session){
        System.out.println(username+"你正在进行登录操作"+password);
        List<User> login = userServies.login(username, password);
        //把登录成功后用户信息，返回给页面   json数据
    //{“data”:[用户对象]，”msg”:”本次请求是否成功，登录成功”，“code”：“200”}
        ResultData resultData ;
        if(login!=null&&login.size()>0){
            resultData = new ResultData("登录成功",200,login);
            //保存在session对象  保存第一个登录成功的用户对象
            session.setAttribute("loginuser",login.get(0));

        }else{
            resultData = new ResultData("登录失败，用户名、密码错误",0,null);
        }
        //把resultData 对象转换为文本对象。
        String string = JSON.toJSONString(resultData);

        System.out.println("用户登录的json："+string);

        return string;
    }


    //显示注册页面
    @RequestMapping("/toRegister")
    public String toRegister(){
        return "register";
    }

    //用户注册
    @RequestMapping("/user/register")
    @ResponseBody // 以json文本数据格式返回
    public String register(User user){   // springmvc直接把页面发出的数据封装为一个用户对象；  对象的属性名===页面发出参数名称
        System.out.println(user);
        //调用服务层方法，进行注册

        int i = userServies.register(user);
        ResultData resultData;// 返回的数据格式
        if (i>0){
            //注册成功
            resultData = new ResultData("注册成功",200,null);
        }else{
            //注册失败
            resultData = new ResultData("注册失败",0,null);
        }
        System.out.println(resultData);
        return JSON.toJSONString(resultData);
    }


    //显示个人信息修改页
    @RequestMapping("/toUpdateUser")
    public String toUpdateUser(){
        return "userdata";
    }
}
